热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

金丝雀|蓝绿_蓝绿发布金丝雀发布灰度发布滚动发布AB测试

篇首语:本文由编程笔记#小编为大家整理,主要介绍了蓝绿发布金丝雀发布灰度发布滚动发布AB测试相关的知识,希望对你有一定的参考价值。金丝雀不是说它外形漂亮或有特点&

篇首语:本文由编程笔记#小编为大家整理,主要介绍了蓝绿发布金丝雀发布灰度发布滚动发布AB测试相关的知识,希望对你有一定的参考价值。


金丝雀不是说它外形漂亮或有特点,而是说它对瓦斯很灵敏。

这些名字玄而又玄,逼格十分高大上。到底是些啥?好像不了解一下,就完全看不懂当下流行的吹哔哔技术PPT了。


一、蓝绿发布

不停老版本,部署新版本然后进行测试。确认OK后将流量切到新版本。如果出现问题,则切回老版本。绿色是新版本,蓝色是老版本。


蓝绿发布的优点是升级切换和回退速度非常快,缺点是新老切换是全部切换,中间没有过渡,如果新版本有问题,则对用户体验有直接影响。并且需要两倍机器资源。

适用于对用户体验有一定容忍度的场景。同时机器资源有富余或者可以按需分配。


二、金丝雀发布

17 世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;当瓦斯含量超过一定限度时,虽然鲁钝的人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为瓦斯检测指标,以便在危险状况下紧急撤离。

所以金丝雀发布是在原有版本可用的情况下,部署一个新版本应用作为「金丝雀」做测试,以尽早发现、调整问题。

优点是用户体验影响小,若出现问题只影响少量用户。不足是发布自动化程度不够,发布期间可引发服务中断。


三、灰度发布

灰度发布是金丝雀发布的放大版。

与蓝绿部署不同的是,灰度发布不是非黑即白的部署方式,所以又称为灰度发布。它能够缓慢的将修改推广到一小部分用户,验证没有问题后,再推广到全部用户,以降低生产环境引入新功能带来的风险。

发布步骤:
1、将流量从待部署节点移出,更新该节点服务到待发布状态,将该节点称为金丝雀节点;

2、根据不同策略,将流量引入金丝雀节点。
策略可以根据情况指定,比如随机样本策略(随机引入)、狗粮策略(就是内部用户或员工先尝鲜)、分区策略(不同区域用户使用不同版本)、用户特征策略(这种比较复杂,需要根据用户个人资料和特征进行分流,类似于千人千面);

3、金丝雀节点验证通过后,选取更多的节点称为金丝雀节点,重复步骤1和步骤2,直到所有节点全部更新。

灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题。


四、滚动发布

金丝雀发布的自动版。

在金丝雀发布基础上的进一步优化改进,是一种自动化程度较高的发布方式,用户体验比较平滑,是目前成熟型技术组织所采用的主流发布方式。

步骤一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本。这种部署方式相对于蓝绿部署,较为节约资源,不需要运行两个集群、两倍的实例数。可以分批部署,例如每次只取出集群的 20% 进行升级。

优点是用户体验影响小,体验较平滑。缺点是发布和回退时间比较缓慢,发布工具比较复杂。


五、AB测试

AB测试和发布不是一个维度的概念。它是效果验证的手段,之所以放在这里一起说,是因为很容易弄混。

AB测试是同时运行多个不同版本,根据策略,将一部分流量引入A版本,另外一部分流量引入B版本,CDEF……版本。通过分析不同版本的实际效果,选出最优解。最优解可能是一个版本获胜,取代另一个版本;也可能是催生出更多的版本,服务于用户;还有可能是多个版本在不同区域同时提供服务。

在开发过程中,也有可能采取AB测试,由不同的两组人马,对同一个功能同时开发不同的两个版本,PK,胜者为王,或者二合一之类。

参考文章
微服务部署:蓝绿发布、滚动发布、灰度发布、金丝雀发布
科普:蓝绿部署、金丝雀发布(灰度发布)、AB测试


推荐阅读
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 本文介绍如何在Linux服务器之间使用SCP命令进行文件传输。SCP(Secure Copy Protocol)是一种基于SSH的安全文件传输协议,支持从远程机器复制文件到本地服务器或反之。示例包括从192.168.45.147复制tomcat目录到本地/home路径。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • Google最新推出的嵌入AI技术的便携式相机Clips现已上架,旨在通过人工智能技术自动捕捉用户生活中值得纪念的时刻,帮助人们减少照片数量过多的问题。 ... [详细]
  • 本文介绍如何在 Unity 的 XML 配置文件中,将参数传递给自定义生命周期管理器的构造函数。我们将详细探讨 CustomLifetimeManager 类的实现及其配置方法。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
  • 本文介绍了如何通过扩展 UnityGUI 创建自定义和复合控件,以满足特定的用户界面需求。内容涵盖简单和静态复合控件的实现,并展示了如何创建复杂的 RGB 滑块。 ... [详细]
  • 通过与阿里云的合作,牛客网成功解决了跨国视频面试中的网络卡顿问题,为求职者和面试官提供了更加流畅的沟通体验。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
author-avatar
建铭琼伶俊涵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有